package com.sanshengshui.netty.client;


import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.channel.ChannelHandler.Sharable;

/**
 * @Sharable 是 Netty 提供的注解，用于标识该处理器是可共享的，即可以被多个通道共享而不用每次都创建新的实例。
 */
@Sharable
public class ClientHandler extends SimpleChannelInboundHandler<String> {
    /**
     * channelRead0 方法是在接收到从服务器发送的消息时被调用的。这个方法在 SimpleChannelInboundHandler 中被声明，用于处理入站消息。
     * 在这个例子中，收到的消息将简单地打印到标准错误输出。
     * @param ctx
     * @param msg
     * @throws Exception
     */
    @Override
    protected void channelRead0(ChannelHandlerContext ctx, String msg) throws Exception {
        System.err.println(msg);
    }

    /**
     * channelRead0 方法是在接收到从服务器发送的消息时被调用的。这个方法在 SimpleChannelInboundHandler 中被声明，用于处理入站消息。
     * 在这个例子中，收到的消息将简单地打印到标准错误输出。
     * @param ctx
     * @param cause
     */
    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
        cause.printStackTrace();
        ctx.close();
    }
}
